import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import autoImport from 'unplugin-auto-import/vite'
import pxToViewport from 'postcss-px-to-viewport'
import tailwindcss from 'tailwindcss'
// autoprefixer 是一个用于自动添加 CSS 浏览器前缀的工具。
import autoprefixer from 'autoprefixer'

import path from 'path'
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    // 必须放在 react 插件之前
    autoImport({
      imports: [
        'react',
        {
          react: [
            'useEffect',
            'useState',
            'useRef',
            'useCallback',
            'useMemo',
            'useContext',
            'useReducer',
            // 可以添加其他需要的 hooks
          ],
        },
      ],
      dts: './src/auto-imports.d.ts', // 生成类型声明文件
    }),
    react(),
  ],
  resolve: {
    alias: {
      // eslint-disable-next-line no-undef
      '@': path.resolve(__dirname, 'src'),
    },
  },
  css: {
    preprocessorOptions: {
      less: {
        javascriptEnabled: true, // 开启JS表达式支持，例如 `primary-color: primaryColor`
        modifyVars: {
          'primary-color': '#1DA57A', // 修改主题色
          'link-color': '#1DA57A', // 链接色
          // 更多自定义样式...
        },
      },
    },
    postcss: {
      plugins: [
         tailwindcss(),
        autoprefixer(),
        pxToViewport({
          unitToConvert: 'px', // 需要转换的单位
          viewportWidth: 1920, // 设计稿宽度
          viewportHeight: 1080, // 设计稿高度
          unitPrecision: 5, // 转换后保留的小数位数
          propList: ['*'], // 需要转换的属性列表，*表示所有
          viewportUnit: 'vw', // 转换后的视口单位
          fontViewportUnit: 'vw', // 字体的视口单位
          selectorBlackList: [], // 不需要转换的CSS选择器
          minPixelValue: 1, // 最小转换数值
          mediaQuery: false, // 是否在媒体查询中也进行转换
          replace: true, // 是否直接替换属性，而不是添加备用属性
          exclude: [], // 忽略的文件路径
          landscape: false, // 是否处理横屏情况
          landscapeUnit: 'vw',
          landscapeWidth: 1920,
        }),
      ],
    },
  },

  //  server: {
  //   proxy: {
  //     '/api': {
  //       target: '/',
  //       changeOrigin: true,

  //     }
  //   }
  // }
  server: {
    host: '0.0.0.0',
    port: 5173,
    https: false,
    // 热更新配置
    hmr: {
      // 强制使用 WebSocket 进行热更新
      protocol: 'ws',
      // 禁用热更新重载整个页面
      overlay: false,
      // 热更新时忽略这些文件的变化
      ignore: ['**/node_modules/**', '**/.git/**'],
    },
    watch: {
      // 监听配置
      usePolling: true,
      // 忽略点文件
      ignored: ['.*'],
    },
    // 跨域的写法
    proxy: {
      '/Auth/': {
        target: 'http://139.196.79.205', // 实际请求地址
        changeOrigin: true,
      },
      '/ApprovalFlow/': {
        target: 'http://139.196.79.205', // 实际请求地址
        changeOrigin: true,
      },
      '/JtmDb/': {
        target: 'http://139.196.79.205', // 实际请求地址
        changeOrigin: true,
      },
    },
  },
})
